iWatcher: Simple and General Architectural Support for Software Debugging

نویسندگان

  • Pin Zhou
  • Feng Qin
  • Wei Liu
  • Yuanyuan Zhou
  • Josep Torrellas
چکیده

Recent impressive advances in microprocessor performance have failed to deliver significant gains in ease of software debugging. This is a major shortcoming of the state of the art, given that software bugs have major implications on computer system reliability and programmer time. Specifically, software bugs account for as much as 40% of computer system failures [10] and cost the U.S. economy $59.5 billion annually, or 0.6% of the GDP [11]! Code debugging is currently largely done using software techniques. One approach is to perform checks statically [2, 4, 5, 18]. Most static tools require significant involvement of the programmer to write specifications or annotate programs. In addition, most static tools are limited by aliasing problems and other compile-time limitations, especially for C/C++ programs. As a result, many bugs often remain in the software even after aggressive static checking. A second approach is to monitor execution dynamically. Examples of dynamic monitors include Purify [7], Valgrind [15], the Intel thread checker [9], DIDUCE [6], Eraser [14], CCured [3, 12], and other tools [1]. The strength of this approach is that the analysis is based on actual execution paths and accurate values of variables and aliasing information. However, most dynamic checkers suffer from two limitations. First, they are often computationally expensive. Some dynamic checkers slow down a program by 6-30 times [6, 14], which makes such tools undesirable for production runs. Moreover, some timing-sensitive bugs may never occur with these slowdowns. Second, most dynamic checkers rely on compilers or pre-processing tools to insert instrumentation and, therefore, are limited by imperfect variable disambiguation. Consequently, some accesses to a monitored location may be missed by the instrumentation tool. Because of this reason, some bugs are caught much later than when they actually occur, which makes it hard to find the root cause of the bug. The following C code gives a simple example.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

AccMon : Automatically Detecting Memory - related Bugs via Program

This paper makes two contributions to architectural support for software debugging. First, it proposes a novel statistics-based, onthe-fly bug detection method called PC-based invariant detection. The idea is based on the observation that, in most programs, a given memory location is typically accessed by only a few instructions. Therefore, by capturing the invariant of the set of PCs that norm...

متن کامل

Empowering Software Debugging Through Architectural Support for Program Rollback

This paper proposes the use of processor support for program rollback, as a key primitive to enhance software debugging in production-run environments. We discuss how hardware support for program rollback can be used to characterize bugs on-the-fly, leverage code versioning for performance or reliability, sandbox device drivers, collect monitoring information with very low overhead, support fai...

متن کامل

Models for Monitoring and Debugging Tools for Parallel and Distributed Software

Several aspects of the multidimensional problem of providing monitoring support tools for the debugging and performance analysis of software for distributed and parallel systems are presented. A formal event-action model at the process level and a layered architectural model are introduced. The application of the event-action model to the development of the layered architectural model is shown....

متن کامل

Debugging scientific applications in the .NET Framework

The Microsoft .NET Framework represents a major advance over previous runtime environments available for Windows platforms and offers a number of architectural features that would be of value in scientific programs. However there are such major differences between.NET and legacy environments under both Windows and Unix, that the effort of migrating software is substantial. Accordingly, software...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2004